package com.yeyks.commonReference.append.sms;

import java.util.Map;

/**
 * @author Beacon
 * @version $Id: SmsService.java, v 0.1 2018年08月13日 16:04 Beacon Exp $
 */
public interface SmsService {
    /**
     * 发送注册验证码
     *
     * @param phone
     */
    void sendSmsForSignup(String phone) throws Exception;

    /**
     * 发送注册验证码
     *
     * @param phone 手机号
     * @param type  0登录注册验证码，1提现验证码，2绑定账户验证码，3推广海报验证码
     */
    void sendSmsCode(String phone, Integer type);

    /**
     * 给酒店发送下单成功提示短信
     *
     * @param phone
     */
    void sendSmsForOrderComplete(String phone) throws Exception;

    /**
     * 验证发送的注册短信是否正确
     *
     * @param phone
     * @param code
     * @return
     */
    boolean verifySmsForSignup(String phone, String code);

    /**
     * 给用户发送短信返回密码
     *
     * @param phone
     * @param password
     * @return
     */
    boolean sendPwcSms(String phone, String password);

    /**
     * 给用户发送下单成功提示短信
     *
     * @param phone     手机号
     * @param person    下单用户名
     * @param daytime   入住时间
     * @param hotelname 酒店名称
     * @param roomtype  房间类型
     * @param roomnum   预订多少间房间
     * @param roomnight 入住几晚
     * @param address   酒店地址
     * @param hoteltel  酒店联系电话
     * @return
     */
    Boolean sendSmsToUserForOrderComplete(String phone, String person, String daytime, String hotelname, String roomtype, String roomnum, String roomnight, String address, String hoteltel);

    /**
     * 给用户发送退款申请发送短信通知酒店
     *
     * @param phone     手机号
     * @param person    下单用户名
     * @param daytime   入住时间
     * @param hotelname 酒店名称
     * @param roomtype  房间类型
     */
    Boolean sendSmsForUserRefund(String phone, String person, String daytime, String hotelname, String roomtype);

    /**
     * 当酒店无法接单时退款，给用户发送短信通知
     *
     * @param phone     手机号
     * @param daytime   入住时间
     * @param hotelname 酒店名称
     * @param roomtype  房间类型
     * @return
     */
    Boolean sendSmsForHotelRefund(String phone, String daytime, String hotelname, String roomtype);

    /**
     * 用户下单成功给酒店通知短信
     *
     * @param phone     手机号
     * @param person    下单用户名
     * @param daytime   入住时间
     * @param hotelname 酒店名称
     * @param roomtype  房间类型
     * @param roomnum   预订多少间房间
     * @param roomnight 入住几晚
     * @return
     */
    Boolean sendSmsToHotelForOrderComplete(String phone, String person, String daytime, String hotelname, String roomtype, String roomnum, String roomnight);


    Boolean sendSmsToBoolean(Map<String, String> map, String templateCode);

    /**
     * 打款失败给用户发短信
     *
     * @param phone
     * @return
     */
    Boolean sendSmsForCashOutFail(String phone);

    /**
     * 打款失败给用户发短信带失败原因
     *
     * @param phone
     * @param reason 原因
     * @return
     */
    Boolean sendSmsForCashOutFailReason(String phone, String reason);

    /**
     * 收支账户给用户发送短信
     *
     * @param phone 手机号
     * @param type  短信类型  0登录注册验证码，1提现验证码，2绑定账户验证码
     * @return true 发送成功， false发送失败
     */
    Boolean sendSmsForIncomeAccount(String phone, Integer type);

    /**
     * 填写入住申请发送短信
     *
     * @param phone
     * @return
     */
    boolean sendUserToWait(String phone);

    /**
     * 拒绝入住申请发送短信
     *
     * @param phone
     * @return
     */
    boolean sendUserToNoPass(String phone);

    /**
     * 发送未下单的新用户信息
     *
     * @param phone 手机号
     * @param couponPrice 优惠券金额
     * @return 返回发送短信结果
     */
    boolean sendSmsToUserAboutOrderIsZeroBySomeDay(String phone, Integer couponPrice);

    /**
     * 发送 有订单 没有成为优享VIP的用户
     * @param phone 手机号
     */
    boolean sendSmsForNoMinVipCardUser(String phone);

    /**
     * 新用户3天未下单
     * @param phone 手机号
     * @return 返回结果
     */
    boolean sendSmsToUserAboutOrderIsZeroByThreeDay(String phone);

    /**
     * 新手任务活动
     *
     * @param phone
     * @param amount
     */
    boolean sendNewTask(String phone, Integer amount);

    /**
     * 发送jip 酒店入住给客服
     * @param phone 手机号
     */
    boolean sendSmsToSysCustomer(String phone);
}